<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/dictobject.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/dictobject.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfRElDVE9CSkVDVF9IXzA_"><span class="b">Py_DICTOBJECT_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfRElDVE9CSkVDVF9IXzA_"><span class="b">Py_DICTOBJECT_H</span></a>
<a name="3" /><span class="False">       3:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="4" /><span class="False">       4:</span> <span class="m">extern</span> <span class="e">&quot;C&quot;</span> <span class="f">{</span>
<a name="5" /><span class="True">       5:</span> <span class="f">#</span><span class="n">endif</span>
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="True">       7:</span> 
<a name="8" /><span class="True">       8:</span> <span class="k">/* Dictionary object type -- mapping from hashable object to object */</span>
<a name="9" /><span class="True">       9:</span> 
<a name="10" /><span class="True">      10:</span> <span class="k">/* The distribution includes a separate file, Objects/dictnotes.txt,</span>
<a name="11" /><span class="True">      11:</span> <span class="k">   describing explorations into dictionary design and optimization.</span>
<a name="12" /><span class="True">      12:</span> <span class="k">   It covers typical dictionary use patterns, the parameters for</span>
<a name="13" /><span class="True">      13:</span> <span class="k">   tuning dictionaries, and several ideas for possible optimizations.</span>
<a name="14" /><span class="True">      14:</span> <span class="k">*/</span>
<a name="15" /><span class="True">      15:</span> 
<a name="16" /><span class="True">      16:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="17" /><span class="True">      17:</span> 
<a name="18" /><span class="True">      18:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="b">_dictkeysobject</span> <span class="b">PyDictKeysObject</span><span class="f">;</span>
<a name="19" /><span class="True">      19:</span> 
<a name="20" /><span class="True">      20:</span> <span class="k">/* The ma_values pointer is NULL for a combined table</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> * or points to an array of PyObject* for a split table</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="True">      23:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="24" /><span class="True">      24:</span>     <a href="macros_ref.html#_UHlPYmplY3RfSEVBRF8w"><span class="b">PyObject_HEAD</span></a>
<a name="25" /><span class="True">      25:</span> 
<a name="26" /><span class="True">      26:</span>     <span class="k">/* Number of items in the dictionary */</span>
<a name="27" /><span class="True">      27:</span>     <span class="b">Py_ssize_t</span> <span class="b">ma_used</span><span class="f">;</span>
<a name="28" /><span class="True">      28:</span> 
<a name="29" /><span class="True">      29:</span>     <span class="k">/* Dictionary version: globally unique, value change each time</span>
<a name="30" /><span class="True">      30:</span> <span class="k">       the dictionary is modified */</span>
<a name="31" /><span class="True">      31:</span>     <span class="b">uint64_t</span> <span class="b">ma_version_tag</span><span class="f">;</span>
<a name="32" /><span class="True">      32:</span> 
<a name="33" /><span class="True">      33:</span>     <span class="b">PyDictKeysObject</span> <span class="f">*</span><span class="b">ma_keys</span><span class="f">;</span>
<a name="34" /><span class="True">      34:</span> 
<a name="35" /><span class="True">      35:</span>     <span class="k">/* If ma_values is NULL, the table is &quot;combined&quot;: keys and values</span>
<a name="36" /><span class="True">      36:</span> <span class="k">       are stored in ma_keys.</span>
<a name="37" /><span class="True">      37:</span> <span class="k"></span>
<a name="38" /><span class="True">      38:</span> <span class="k">       If ma_values is not NULL, the table is splitted:</span>
<a name="39" /><span class="True">      39:</span> <span class="k">       keys are stored in ma_keys and values are stored in ma_values */</span>
<a name="40" /><span class="True">      40:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">ma_values</span><span class="f">;</span>
<a name="41" /><span class="True">      41:</span> <span class="f">}</span> <span class="b">PyDictObject</span><span class="f">;</span>
<a name="42" /><span class="True">      42:</span> 
<a name="43" /><span class="True">      43:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="44" /><span class="True">      44:</span>     <a href="macros_ref.html#_UHlPYmplY3RfSEVBRF8w"><span class="b">PyObject_HEAD</span></a>
<a name="45" /><span class="True">      45:</span>     <span class="b">PyDictObject</span> <span class="f">*</span><span class="b">dv_dict</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <span class="f">}</span> <span class="b">_PyDictViewObject</span><span class="f">;</span>
<a name="47" /><span class="True">      47:</span> 
<a name="48" /><span class="True">      48:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* Py_LIMITED_API */</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="True">      50:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDict_Type</span><span class="f">;</span>
<a name="51" /><span class="True">      51:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictIterKey_Type</span><span class="f">;</span>
<a name="52" /><span class="True">      52:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictIterValue_Type</span><span class="f">;</span>
<a name="53" /><span class="True">      53:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictIterItem_Type</span><span class="f">;</span>
<a name="54" /><span class="True">      54:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictKeys_Type</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictItems_Type</span><span class="f">;</span>
<a name="56" /><span class="True">      56:</span> <a href="macros_ref.html#_UHlBUElfREFUQV8w"><span class="b">PyAPI_DATA</span></a><span class="f">(</span><span class="b">PyTypeObject</span><span class="f">)</span> <span class="b">PyDictValues_Type</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span> 
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_UHlEaWN0X0NoZWNrXzA_"><span class="b">PyDict_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> \
<a name="59" /><span class="True">      59:</span>                  <a href="macros_ref.html#_UHlUeXBlX0Zhc3RTdWJjbGFzc18w"><span class="b">PyType_FastSubclass</span></a><span class="f">(</span><a href="macros_ref.html#_UHlfVFlQRV8w"><span class="b">Py_TYPE</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">,</span> <a href="macros_ref.html#_UHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTXzA_"><span class="b">Py_TPFLAGS_DICT_SUBCLASS</span></a><span class="f">)</span>
<a name="60" /><span class="True">      60:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_UHlEaWN0X0NoZWNrRXhhY3RfMA__"><span class="b">PyDict_CheckExact</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">(</span><a href="macros_ref.html#_UHlfVFlQRV8w"><span class="b">Py_TYPE</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">==</span> <span class="f">&amp;</span><span class="b">PyDict_Type</span><span class="f">)</span>
<a name="61" /><span class="True">      61:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_UHlEaWN0S2V5c19DaGVja18w"><span class="b">PyDictKeys_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <a href="macros_ref.html#_UHlPYmplY3RfVHlwZUNoZWNrXzA_"><span class="b">PyObject_TypeCheck</span></a><span class="f">(</span><span class="b">op</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">PyDictKeys_Type</span><span class="f">)</span>
<a name="62" /><span class="True">      62:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_UHlEaWN0SXRlbXNfQ2hlY2tfMA__"><span class="b">PyDictItems_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <a href="macros_ref.html#_UHlPYmplY3RfVHlwZUNoZWNrXzA_"><span class="b">PyObject_TypeCheck</span></a><span class="f">(</span><span class="b">op</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">PyDictItems_Type</span><span class="f">)</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlEaWN0VmFsdWVzX0NoZWNrXzA_"><span class="b">PyDictValues_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <a href="macros_ref.html#_UHlPYmplY3RfVHlwZUNoZWNrXzA_"><span class="b">PyObject_TypeCheck</span></a><span class="f">(</span><span class="b">op</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">PyDictValues_Type</span><span class="f">)</span>
<a name="64" /><span class="True">      64:</span> <span class="k">/* This excludes Values, since they are not sets. */</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span> <span class="n">define</span> <a href="macros_ref.html#_UHlEaWN0Vmlld1NldF9DaGVja18w"><span class="b">PyDictViewSet_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> \
<a name="66" /><span class="True">      66:</span>     <span class="f">(</span><a href="macros_ref.html#_UHlEaWN0S2V5c19DaGVja18w"><span class="b">PyDictKeys_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span> <span class="f">||</span> <a href="macros_ref.html#_UHlEaWN0SXRlbXNfQ2hlY2tfMA__"><span class="b">PyDictItems_Check</span></a><span class="f">(</span><span class="b">op</span><span class="f">)</span><span class="f">)</span>
<a name="67" /><span class="True">      67:</span> 
<a name="68" /><span class="True">      68:</span> 
<a name="69" /><span class="True">      69:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_New</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="True">      70:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_GetItem</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="72" /><span class="True">      72:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDict_GetItem_KnownHash</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span>
<a name="73" /><span class="True">      73:</span>                                        <span class="b">Py_hash_t</span> <span class="b">hash</span><span class="f">)</span><span class="f">;</span>
<a name="74" /><span class="True">      74:</span> <span class="f">#</span><span class="n">endif</span>
<a name="75" /><span class="True">      75:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_GetItemWithError</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="77" /><span class="True">      77:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDict_GetItemIdWithError</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span>
<a name="78" /><span class="True">      78:</span>                                                   <span class="m">struct</span> <span class="b">_Py_Identifier</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="79" /><span class="True">      79:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_SetDefault</span><span class="f">(</span>
<a name="80" /><span class="True">      80:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">defaultobj</span><span class="f">)</span><span class="f">;</span>
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">endif</span>
<a name="82" /><span class="True">      82:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_SetItem</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">item</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="True">      83:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="84" /><span class="True">      84:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_SetItem_KnownHash</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span>
<a name="85" /><span class="True">      85:</span>                                           <span class="b">PyObject</span> <span class="f">*</span><span class="b">item</span><span class="f">,</span> <span class="b">Py_hash_t</span> <span class="b">hash</span><span class="f">)</span><span class="f">;</span>
<a name="86" /><span class="True">      86:</span> <span class="f">#</span><span class="n">endif</span>
<a name="87" /><span class="True">      87:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_DelItem</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="88" /><span class="True">      88:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="89" /><span class="True">      89:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_DelItem_KnownHash</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span>
<a name="90" /><span class="True">      90:</span>                                           <span class="b">Py_hash_t</span> <span class="b">hash</span><span class="f">)</span><span class="f">;</span>
<a name="91" /><span class="True">      91:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_DelItemIf</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span>
<a name="92" /><span class="True">      92:</span>                                   <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">predicate</span><span class="f">)</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">value</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="True">      93:</span> <span class="f">#</span><span class="n">endif</span>
<a name="94" /><span class="True">      94:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="b">PyDict_Clear</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="95" /><span class="True">      95:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_Next</span><span class="f">(</span>
<a name="96" /><span class="True">      96:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">Py_ssize_t</span> <span class="f">*</span><span class="b">pos</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">value</span><span class="f">)</span><span class="f">;</span>
<a name="97" /><span class="True">      97:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="98" /><span class="True">      98:</span> <span class="b">PyDictKeysObject</span> <span class="f">*</span><span class="b">_PyDict_NewKeysForClass</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="99" /><span class="True">      99:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyObject_GenericGetDict</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="100" /><span class="True">     100:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_Next</span><span class="f">(</span>
<a name="101" /><span class="True">     101:</span>     <span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">Py_ssize_t</span> <span class="f">*</span><span class="b">pos</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">value</span><span class="f">,</span> <span class="b">Py_hash_t</span> <span class="f">*</span><span class="b">hash</span><span class="f">)</span><span class="f">;</span>
<a name="102" /><span class="True">     102:</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">_PyDictView_New</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyTypeObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="103" /><span class="True">     103:</span> <span class="f">#</span><span class="n">endif</span>
<a name="104" /><span class="True">     104:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_Keys</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="105" /><span class="True">     105:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_Values</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="106" /><span class="True">     106:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_Items</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="107" /><span class="True">     107:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">Py_ssize_t</span><span class="f">)</span> <span class="b">PyDict_Size</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="108" /><span class="True">     108:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_Copy</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="True">     109:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_Contains</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="110" /><span class="True">     110:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="111" /><span class="True">     111:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_Contains</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">Py_hash_t</span> <span class="b">hash</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="True">     112:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDict_NewPresized</span><span class="f">(</span><span class="b">Py_ssize_t</span> <span class="b">minused</span><span class="f">)</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="b">_PyDict_MaybeUntrack</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="True">     114:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_HasOnlyStringKeys</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">)</span><span class="f">;</span>
<a name="115" /><span class="True">     115:</span> <span class="b">Py_ssize_t</span> <span class="b">_PyDict_KeysSize</span><span class="f">(</span><span class="b">PyDictKeysObject</span> <span class="f">*</span><span class="b">keys</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="True">     116:</span> <span class="b">Py_ssize_t</span> <span class="b">_PyDict_SizeOf</span><span class="f">(</span><span class="b">PyDictObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="True">     117:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDict_Pop</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="118" /><span class="True">     118:</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">_PyDict_Pop_KnownHash</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">Py_hash_t</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="119" /><span class="True">     119:</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">_PyDict_FromKeys</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="120" /><span class="True">     120:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_X1B5RGljdF9IYXNTcGxpdFRhYmxlXzA_"><span class="b">_PyDict_HasSplitTable</span></a><span class="f">(</span><span class="b">d</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">d</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">ma_values</span> <span class="f">!=</span> <a href="macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">)</span>
<a name="121" /><span class="True">     121:</span> 
<a name="122" /><span class="True">     122:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_ClearFreeList</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="123" /><span class="True">     123:</span> <span class="f">#</span><span class="n">endif</span>
<a name="124" /><span class="True">     124:</span> 
<a name="125" /><span class="True">     125:</span> <span class="k">/* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */</span>
<a name="126" /><span class="True">     126:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_Update</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">other</span><span class="f">)</span><span class="f">;</span>
<a name="127" /><span class="True">     127:</span> 
<a name="128" /><span class="True">     128:</span> <span class="k">/* PyDict_Merge updates/merges from a mapping object (an object that</span>
<a name="129" /><span class="True">     129:</span> <span class="k">   supports PyMapping_Keys() and PyObject_GetItem()).  If override is true,</span>
<a name="130" /><span class="True">     130:</span> <span class="k">   the last occurrence of a key wins, else the first.  The Python</span>
<a name="131" /><span class="True">     131:</span> <span class="k">   dict.update(other) is equivalent to PyDict_Merge(dict, other, 1).</span>
<a name="132" /><span class="True">     132:</span> <span class="k">*/</span>
<a name="133" /><span class="True">     133:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_Merge</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span>
<a name="134" /><span class="True">     134:</span>                                    <span class="b">PyObject</span> <span class="f">*</span><span class="b">other</span><span class="f">,</span>
<a name="135" /><span class="True">     135:</span>                                    <span class="m">int</span> <span class="b">override</span><span class="f">)</span><span class="f">;</span>
<a name="136" /><span class="True">     136:</span> 
<a name="137" /><span class="True">     137:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="138" /><span class="True">     138:</span> <span class="k">/* Like PyDict_Merge, but override can be 0, 1 or 2.  If override is 0,</span>
<a name="139" /><span class="True">     139:</span> <span class="k">   the first occurrence of a key wins, if override is 1, the last occurrence</span>
<a name="140" /><span class="True">     140:</span> <span class="k">   of a key wins, if override is 2, a KeyError with conflicting key as</span>
<a name="141" /><span class="True">     141:</span> <span class="k">   argument is raised.</span>
<a name="142" /><span class="True">     142:</span> <span class="k">*/</span>
<a name="143" /><span class="True">     143:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_MergeEx</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">other</span><span class="f">,</span> <span class="m">int</span> <span class="b">override</span><span class="f">)</span><span class="f">;</span>
<a name="144" /><span class="True">     144:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDictView_Intersect</span><span class="f">(</span><span class="b">PyObject</span><span class="f">*</span> <span class="b">self</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">other</span><span class="f">)</span><span class="f">;</span>
<a name="145" /><span class="True">     145:</span> <span class="f">#</span><span class="n">endif</span>
<a name="146" /><span class="True">     146:</span> 
<a name="147" /><span class="True">     147:</span> <span class="k">/* PyDict_MergeFromSeq2 updates/merges from an iterable object producing</span>
<a name="148" /><span class="True">     148:</span> <span class="k">   iterable objects of length 2.  If override is true, the last occurrence</span>
<a name="149" /><span class="True">     149:</span> <span class="k">   of a key wins, else the first.  The Python dict constructor dict(seq2)</span>
<a name="150" /><span class="True">     150:</span> <span class="k">   is equivalent to dict={}; PyDict_MergeFromSeq(dict, seq2, 1).</span>
<a name="151" /><span class="True">     151:</span> <span class="k">*/</span>
<a name="152" /><span class="True">     152:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_MergeFromSeq2</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">d</span><span class="f">,</span>
<a name="153" /><span class="True">     153:</span>                                            <span class="b">PyObject</span> <span class="f">*</span><span class="b">seq2</span><span class="f">,</span>
<a name="154" /><span class="True">     154:</span>                                            <span class="m">int</span> <span class="b">override</span><span class="f">)</span><span class="f">;</span>
<a name="155" /><span class="True">     155:</span> 
<a name="156" /><span class="True">     156:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">PyDict_GetItemString</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="157" /><span class="True">     157:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="158" /><span class="True">     158:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span> <span class="b">_PyDict_GetItemId</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span> <span class="m">struct</span> <span class="b">_Py_Identifier</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="159" /><span class="True">     159:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_LIMITED_API */</span>
<a name="160" /><span class="True">     160:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_SetItemString</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">item</span><span class="f">)</span><span class="f">;</span>
<a name="161" /><span class="True">     161:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="162" /><span class="True">     162:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_SetItemId</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span> <span class="m">struct</span> <span class="b">_Py_Identifier</span> <span class="f">*</span><span class="b">key</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">item</span><span class="f">)</span><span class="f">;</span>
<a name="163" /><span class="True">     163:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_LIMITED_API */</span>
<a name="164" /><span class="True">     164:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">PyDict_DelItemString</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">dp</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="True">     165:</span> 
<a name="166" /><span class="True">     166:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">Py_LIMITED_API</span>
<a name="167" /><span class="True">     167:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">int</span><span class="f">)</span> <span class="b">_PyDict_DelItemId</span><span class="f">(</span><span class="b">PyObject</span> <span class="f">*</span><span class="b">mp</span><span class="f">,</span> <span class="m">struct</span> <span class="b">_Py_Identifier</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="168" /><span class="True">     168:</span> <a href="macros_ref.html#_UHlBUElfRlVOQ18w"><span class="b">PyAPI_FUNC</span></a><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="b">_PyDict_DebugMallocStats</span><span class="f">(</span><span class="b">FILE</span> <span class="f">*</span><span class="b">out</span><span class="f">)</span><span class="f">;</span>
<a name="169" /><span class="True">     169:</span> 
<a name="170" /><span class="True">     170:</span> <span class="m">int</span> <span class="b">_PyObjectDict_SetItem</span><span class="f">(</span><span class="b">PyTypeObject</span> <span class="f">*</span><span class="b">tp</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">*</span><span class="b">dictptr</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">value</span><span class="f">)</span><span class="f">;</span>
<a name="171" /><span class="True">     171:</span> <span class="b">PyObject</span> <span class="f">*</span><span class="b">_PyDict_LoadGlobal</span><span class="f">(</span><span class="b">PyDictObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyDictObject</span> <span class="f">*</span><span class="f">,</span> <span class="b">PyObject</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="True">     172:</span> <span class="f">#</span><span class="n">endif</span>
<a name="173" /><span class="True">     173:</span> 
<a name="174" /><span class="False">     174:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">__cplusplus</span>
<a name="175" /><span class="False">     175:</span> <span class="f">}</span>
<a name="176" /><span class="True">     176:</span> <span class="f">#</span><span class="n">endif</span>
<a name="177" /><span class="True">     177:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_DICTOBJECT_H */</span>
<a name="178" /><span class="True">     178:</span> </pre>
  </body>
</html>
